<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/Python-3.6.2/Include/classobject.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/Python-3.6.2/Include/classobject.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="k">/* Former class object interface -- now only bound methods are here  */</span>
<a name="2" /><span class="True">       2:</span> 
<a name="3" /><span class="True">       3:</span> <span class="k">/* Revealing some structures (not for general use) */</span>
<a name="4" /><span class="True">       4:</span> 
<a name="5" /><span class="True">       5:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="6" /><span class="True">       6:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="macros_noref.html#_UHlfQ0xBU1NPQkpFQ1RfSF8w"><span class="b">Py_CLASSOBJECT_H</span></a>
<a name="7" /><span class="True">       7:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlfQ0xBU1NPQkpFQ1RfSF8w"><span class="b">Py_CLASSOBJECT_H</span></a>
<a name="8" /><span class="False">       8:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">__cplusplus</span>
<a name="9" /><span class="False">       9:</span> <span class="m">extern</span> <span class="e">&quot;C&quot;</span> <span class="f">{</span>
<a name="10" /><span class="True">      10:</span> <span class="f">#</span><span class="n">endif</span>
<a name="11" /><span class="True">      11:</span> 
<a name="12" /><span class="True">      12:</span> <span class="m">typedef</span> <span class="m">struct</span> <span class="f">{</span>
<a name="13" /><span class="True">      13:</span>     <a href="macros_ref.html#_UHlPYmplY3RfSEVBRF8w"><span class="b">PyObject_HEAD</span></a>
<a name="14" /><span class="True">      14:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">im_func</span><span class="f">;</span>   <span class="k">/* The callable object implementing the method */</span>
<a name="15" /><span class="True">      15:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">im_self</span><span class="f">;</span>   <span class="k">/* The instance it is bound to */</span>
<a name="16" /><span class="True">      16:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">im_weakreflist</span><span class="f">;</span> <span class="k">/* List of weak references */</span>
<a name="17" /><span class="True">      17:</span> <span class="f">}</span> <span class="b">PyMethodObject</span><span class="f">;</span>
<a name="18" /><span class="True">      18:</span> 
<a name="19" /><span class="True">      19:</span> <a href="macros_ref.html#_UHlBUElfREFUQV8w"><span class="b">PyAPI_DATA</span></a><span class="f">(</span><span class="b">PyTypeObject</span><span class="f">)</span> <span class="b">PyMethod_Type</span><span class="f">;</span>
<a name="20" /><span class="True">      20:</span> 
<a name="21" /><span class="True">      21:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlNZXRob2RfQ2hlY2tfMA__"><span class="b">PyMethod_Check</span></a><span class="f">(</span><span class="b">op</span><span class="f">)</span> <span class="f">(</span><span class="f">(</span><span class="b">op</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">ob_type</span> <span class="f">==</span> <span class="f">&amp;</span><span class="b">PyMethod_Type</span><span class="f">)</span>
<a name="22" /><span class="True">      22:</span> 
<a name="23" /><span class="True">      23:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyMethod_New</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="24" /><span class="True">      24:</span> 
<a name="25" /><span class="True">      25:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyMethod_Function</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="26" /><span class="True">      26:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyMethod_Self</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="27" /><span class="True">      27:</span> 
<a name="28" /><span class="True">      28:</span> <span class="k">/* Macros for direct access to these values. Type checks are *not*</span>
<a name="29" /><span class="True">      29:</span> <span class="k">   done, so use with care. */</span>
<a name="30" /><span class="True">      30:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlNZXRob2RfR0VUX0ZVTkNUSU9OXzA_"><span class="b">PyMethod_GET_FUNCTION</span></a><span class="f">(</span><span class="b">meth</span><span class="f">)</span> \
<a name="31" /><span class="True">      31:</span>         <span class="f">(</span><span class="f">(</span><span class="f">(</span><span class="b">PyMethodObject</span> <span class="f">*</span><span class="f">)</span><span class="b">meth</span><span class="f">)</span> <span class="f">-&gt;</span> <span class="b">im_func</span><span class="f">)</span>
<a name="32" /><span class="True">      32:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlNZXRob2RfR0VUX1NFTEZfMA__"><span class="b">PyMethod_GET_SELF</span></a><span class="f">(</span><span class="b">meth</span><span class="f">)</span> \
<a name="33" /><span class="True">      33:</span>     <span class="f">(</span><span class="f">(</span><span class="f">(</span><span class="b">PyMethodObject</span> <span class="f">*</span><span class="f">)</span><span class="b">meth</span><span class="f">)</span> <span class="f">-&gt;</span> <span class="b">im_self</span><span class="f">)</span>
<a name="34" /><span class="True">      34:</span> 
<a name="35" /><span class="True">      35:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">PyMethod_ClearFreeList</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="36" /><span class="True">      36:</span> 
<a name="37" /><span class="True">      37:</span> <span class="m">typedef</span> <span class="m">struct</span> <span class="f">{</span>
<a name="38" /><span class="True">      38:</span>     <a href="macros_ref.html#_UHlPYmplY3RfSEVBRF8w"><span class="b">PyObject_HEAD</span></a>
<a name="39" /><span class="True">      39:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">func</span><span class="f">;</span>
<a name="40" /><span class="True">      40:</span> <span class="f">}</span> <span class="b">PyInstanceMethodObject</span><span class="f">;</span>
<a name="41" /><span class="True">      41:</span> 
<a name="42" /><span class="True">      42:</span> <a href="macros_ref.html#_UHlBUElfREFUQV8w"><span class="b">PyAPI_DATA</span></a><span class="f">(</span><span class="b">PyTypeObject</span><span class="f">)</span> <span class="b">PyInstanceMethod_Type</span><span class="f">;</span>
<a name="43" /><span class="True">      43:</span> 
<a name="44" /><span class="True">      44:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlJbnN0YW5jZU1ldGhvZF9DaGVja18w"><span class="b">PyInstanceMethod_Check</span></a><span class="f">(</span><span class="b">op</span><span class="f">)</span> <span class="f">(</span><span class="f">(</span><span class="b">op</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">ob_type</span> <span class="f">==</span> <span class="f">&amp;</span><span class="b">PyInstanceMethod_Type</span><span class="f">)</span>
<a name="45" /><span class="True">      45:</span> 
<a name="46" /><span class="True">      46:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyInstanceMethod_New</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="47" /><span class="True">      47:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyInstanceMethod_Function</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="48" /><span class="True">      48:</span> 
<a name="49" /><span class="True">      49:</span> <span class="k">/* Macros for direct access to these values. Type checks are *not*</span>
<a name="50" /><span class="True">      50:</span> <span class="k">   done, so use with care. */</span>
<a name="51" /><span class="True">      51:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlJbnN0YW5jZU1ldGhvZF9HRVRfRlVOQ1RJT05fMA__"><span class="b">PyInstanceMethod_GET_FUNCTION</span></a><span class="f">(</span><span class="b">meth</span><span class="f">)</span> \
<a name="52" /><span class="True">      52:</span>         <span class="f">(</span><span class="f">(</span><span class="f">(</span><span class="b">PyInstanceMethodObject</span> <span class="f">*</span><span class="f">)</span><span class="b">meth</span><span class="f">)</span> <span class="f">-&gt;</span> <span class="b">func</span><span class="f">)</span>
<a name="53" /><span class="True">      53:</span> 
<a name="54" /><span class="False">      54:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">__cplusplus</span>
<a name="55" /><span class="False">      55:</span> <span class="f">}</span>
<a name="56" /><span class="True">      56:</span> <span class="f">#</span><span class="n">endif</span>
<a name="57" /><span class="True">      57:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* !Py_CLASSOBJECT_H */</span>
<a name="58" /><span class="True">      58:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* Py_LIMITED_API */</span>
<a name="59" /><span class="True">      59:</span> </pre>
  </body>
</html>
